import os

from lib.common import is_user_exist, save, read, DB_DIR, get_user_list, time_statistics

is_login = False  # 是否登录


@time_statistics
def register():
    """注册功能 """
    while True:
        username = input('请输入要注册的用户名：').strip()
        if is_user_exist(username):  # 用户存在
            print('此用户以存在！请重新输入！')
            continue

        password = input('请输入要密码：').strip()
        age = input('请输入年龄：').strip()
        phone = input('请输入电话号码：').strip()
        user_dict = {  # 用户字典
            'username': username,
            'password': password,
            'age': age,
            'phone': phone,
        }
        save(user_dict)  # 保存用户文件
        print('注册成功！')
        return


@time_statistics
def login():
    """登录功能"""
    username = input('请输入登录的用户名：').strip()
    if not is_user_exist(username):  # 用户不存在
        print('此用户不存在！请先注册！')
        return
    password = input(f'请输入{username}的密码：').strip()
    user_dict = read(username)
    if not password == user_dict['password']:  # 密码错误
        print('密码错误登录失败！')
        return
    global is_login
    is_login = True  # 修改登录状态
    print('登录成功！')


@time_statistics
def cat():
    """查看用户功能"""
    if not is_login:  # 是否登录
        print("请登录后使用此功能！")
        return

    user_file_list = os.listdir(DB_DIR)
    user_list = get_user_list(user_file_list)  # 获取用户列表

    for user in user_list:  # 打印用户列表
        print(user)

    while True:
        username = input('请输入你想要查看的用户名：')
        if not username in user_list:
            print('你输入的用户不存在，请重新输入：')
            continue
        break
    user_dict = read(username)  # 读取用户文件
    print(f"用户名:{user_dict['username']} 年龄:{user_dict['age']} 电话:{user_dict['phone']}")


# 功能字典
src_dict = {
    '1': register,
    '2': login,
    '3': cat,
    '4': exit,
}


# 主循环
def run():
    while True:
        print("""
            1.注册用户
            2.登录用户
            3.查看用户
            4.退出系统
        """)
        order = input('请输入功能：').strip()
        if not src_dict.get(order):
            print('功能编号输入错误，请重新输入！！')
            continue
        src_dict[order]()
        input('按回车继续...')
